%     AERO LOAD - программа для нагружения агрегатов самолета распределенной нагрузкой
%     Copyright (C) 2018-2024  Михаил Козлов
%     Сайт проекта: <http://www.fastenerdoctor.ru/>
%     Адрес электронной почты для связи с разработчиком:
%     <doctor.fastener@gmail.com>
% 
%     Эта программа является свободным программным обеспечением: Вы можете
%     распространять ее и/или изменять, соблюдая условия Универсальной общественной
%     лицензии GNU, опубликованной Фондом свободного программного обеспечения,
%     либо редакции 3, либо (на Ваше усмотрение) любой редакции, выпущенной позже.
% 
%     Эта программа распространяется в надежде на то, что она окажется полезной,
%     но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, включая даже подразумеваемую гарантию ТОВАРНОЙ ПРИГОДНОСТИ,
%     либо ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Ознакомьтесь с Универсальной общественной
%     лицензией GNU для получения более подробной информации.
% 
%     Вы должны были получить копию Универсальной общественной лицензии GNU
%     вместе с этой программой. Если Вы ее не получили, то перейдите по адресу:
%     <http://www.gnu.org/licenses/>.
% 
%     This program is free software: you can redistribute it and/or modify
%     it under the terms of the GNU General Public License as published by
%     the Free Software Foundation, either version 3 of the License, or
%     (at your option) any later version.
% 
%     This program is distributed in the hope that it will be useful,
%     but WITHOUT ANY WARRANTY; without even the implied warranty of
%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%     GNU General Public License for more details.
% 
%     You should have received a copy of the GNU General Public License
%     along with this program.  If not, see <https://www.gnu.org/licenses/>.

function GW_Set_Graphics_Properties(Window_Language)

global Graphics_Properties;

Graphics_Properties = [];

% Язык окна
Graphics_Properties.Language = Window_Language;

% Размеры окна
Graphics_Properties.Window_Offset = 50; % [пиксели] Офсет окна от краев экрана и панели задач
Graphics_Properties.Taskbar_High = 40; % [пиксели] Высота панели задач

% Параметры боковой панели
Graphics_Properties.Side_Panel_Width_RU = 314; % [пиксели] Ширина боковой панели (русский язык)
Graphics_Properties.Side_Panel_Width_EN = 274; % [пиксели] Ширина боковой панели (английский язык)
Graphics_Properties.Side_Panel_Width_Simple = 274; % [пиксели] Ширина боковой панели (упрощенный интерфейс)

% Сглаживание графики
Graphics_Properties.Graphics_Smoothing = 'on'; % on | off

% Коэффициент масштаба
Graphics_Properties.Scale_Factor = 1.1;

% Надписи и кнопки на панелях
Graphics_Properties.Panel_Left_Offset = 16; % [пиксели] Оффсет от левой границы области
Graphics_Properties.Panel_Right_Offset = 16; % [пиксели] Оффсет от левой границы области
Graphics_Properties.Panel_Top_Offset = 16; % [пиксели] Оффсет от верхней границы области
Graphics_Properties.Panel_Inner_Offset = 3; % [пиксели] Оффсет элементов друг от друга
Graphics_Properties.Panel_Blocks_Offset = 13; % [пиксели] Оффсет блоков друг от друга

Graphics_Properties.Panel_Textbox_High = 16; % [пиксели] Высота текстового поля с текстом
Graphics_Properties.Panel_Slider_High = 20; % [пиксели] Высота слайдера
Graphics_Properties.Number_Textbox_High = 14; % [пиксели] Высота текстового поля с числами
Graphics_Properties.Slider_Textbox_Width = 23; % [пиксели] Ширина текстового поля
Graphics_Properties.Param_Textbox_Width = 14; % [пиксели] Ширина текстового поля

Graphics_Properties.Panel_Button_Size = 32; % [пиксели] Размер кнопки
Graphics_Properties.Small_Button_Size = 20; % [пиксели] Размер кнопки
Graphics_Properties.Plot_Erase_Button_High = 24; % [пиксели] Размер кнопки
Graphics_Properties.Plot_Erase_Button_Width = 70; % [пиксели] Размер кнопки

Graphics_Properties.Radio_Button_Box_High = 18; % [пиксели] Высота поля radiobutton

% Параметры системы координат в углу экрана
Graphics_Properties.Coord_Axes_Offset = 10; % [пиксели] Офсет от краев экрана
Graphics_Properties.Coord_Axes_Width = 90; % [пиксели] Сторона области для отрисовки системы координат
Graphics_Properties.Coord_Color = uint8([255 0 255]);

% Общие параметры сфер
Graphics_Properties.Sphere_Mesh_Density = 50; % Параметр числа граней сфер

% Параметры угловых точек поверхности хорд
Graphics_Properties.Corner_Points_Size = 0.02; % Относительный диаметр угловых точек поверхности хорд (по отношению к характерному размеру модели)
Graphics_Properties.Corner_Points_Color = uint8([255 255 0]); % Цвет угловых точек поверхности хорд

% Параметры угловых точек проекции поверхности хорд
Graphics_Properties.Projected_Corner_Points_Size = 0.02; % Относительный диаметр проекции угловых точек поверхности хорд (по отношению к характерному размеру модели)
Graphics_Properties.Projected_Corner_Points_Color = uint8([0 255 0]); % Цвет проекции угловых точек поверхности хорд

% Параметры поверхности хорд
Graphics_Properties.Chord_Surf_Color = uint8([255 102 0]); % Цвет поверхности хорд
Graphics_Properties.Chord_Surf_Boundary_Color = uint8([255 102 0]); % Цвет границы поверхности хорд
Graphics_Properties.Chord_Surf_Boundary_Width = 1.5; % Толщина границы поверхности хорд
Graphics_Properties.Chord_Surf_N_Param_Lines_Span = 3; % Число параметрических линий размаха на поверхности хорд
Graphics_Properties.Chord_Surf_N_Param_Lines_Chord = 3; % Число параметрических линий хорд на поверхности хорд
Graphics_Properties.Chord_Surf_Parametric_Lines_Color = uint8([255 102 0]); % Цвет параметрических линий на поверхности хорд
Graphics_Properties.Chord_Surf_Translucency = 0; % Начальная прозрачность поверхности хорд

% Параметры проекции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_Color = uint8([255 255 255]); % Цвет проекции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_Boundary_Color = uint8([255 255 255]); % Цвет границы проекции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_Boundary_Width = 1.5; % Толщина границы проекции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_N_Param_Lines_Span = 3; % Число параметрических линий размаха на проекции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_N_Param_Lines_Chord = 3; % Число параметрических линий хорд на проекции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_Parametric_Lines_Color = uint8([255 255 255]); % Цвет параметрических линий на проеции поверхности хорд
Graphics_Properties.Projected_Chord_Surf_Translucency = 0; % Начальная прозрачность проекции поверхности хорд

% Параметры конечно-элементной сетки
Graphics_Properties.Element_Face_Color = uint8([0 255 255]); % Цвет элементов
Graphics_Properties.Element_Edge_Color = uint8([0 26 51]); % Цвет ребер элементов темный
Graphics_Properties.Element_Edge_Color_Bright = uint8([255 255 255]); % Цвет ребер элементов светлый
Graphics_Properties.Element_Edge_Color_Threshold = 0.3;
Graphics_Properties.Element_Face_Translucency = 0; % Начальная прозрачность элементов

% Параметры нормалей элементов
Graphics_Properties.Element_Normal_Color = uint8([255 0 0]); % Цвет нормалей
Graphics_Properties.Element_Normal_Size = 0.1; % Относительная длина вектора нормали (по отношению к характерной длине модели)
Graphics_Properties.Normal_Arrow_Size_1 = 0.2; % Относительная длина стрелки на векторе силы (по отношению к длине вектора)
Graphics_Properties.Normal_Arrow_Size_2 = 0.08; % Относительная ширина стрелки на векторе силы (по отношению к длине вектора)

% Параметры эпюр
Graphics_Properties.Span_Load_Diag_N_Points = 200; % Число точек в эпюре
Graphics_Properties.Span_Load_Diag_Size = 0.2; % Относительная высота эпюры погонной нагрузки (по отношению к наиболее характерной длине модели)
Graphics_Properties.Span_Load_Diag_Color = uint8([0 255 0]); % Цвет эпюры погонной нагрузки
Graphics_Properties.Span_Load_Diag_Width = 1.5; % Толщина линии эпюры погонной нагрузки
Graphics_Properties.Span_Load_Diag_Boundary_Width = 1.5; % Толщина линии границы эпюры погонной нагрузки

Graphics_Properties.Pressure_Diag_Number = 5; % Число эпюр давления
Graphics_Properties.Pressure_Diag_N_Points = 100; % Число точек в эпюрах
Graphics_Properties.Pressure_Diag_Size = 0.2; % Относительная высота эпюр давления (по отношению к наиболее характерной длине модели)
Graphics_Properties.Pressure_Diag_Color = uint8([0 255 255]); % Цвет эпюр давления
Graphics_Properties.Pressure_Diag_Width = 1.5; % Толщина линии эпюр давления
Graphics_Properties.Pressure_Diag_Boundary_Width = 1.5; % Толщина линии границы эпюр давления

% Параметры графика теоретического распределения величины Xd по размаху
Graphics_Properties.Xd_Plot_Color = uint8([153 51 255]); % Цвет линии
Graphics_Properties.Xd_Plot_Line_Width = 1.5; % Толщина линии

% Параметры теоретического центра давления
Graphics_Properties.Pressure_Center_Size = 0.05; % Относительный размер перекрестия теоретического центра давления (по отношению к характерному размеру модели)
Graphics_Properties.Pressure_Center_Color = uint8([255 0 0]); % Цвет теоретического центра давления
Graphics_Properties.Pressure_Center_Line_Width = 1.5; % Толщина линии теоретического центра давления

% Параметры точки суммирования
Graphics_Properties.Summation_Point_Size = 0.02; % Относительный диаметр точки суммирования (по отношению к характерному размеру модели)
Graphics_Properties.Summation_Point_Color = uint8([51 153 255]); % Цвет точки суммирования

% Параметры системы координат суммирования
Graphics_Properties.Summation_Coord_Axis_Size = 0.06; % Относительная длина осей СК (по отношению к характерному размеру модели)
Graphics_Properties.Summation_Coord_Label_Offset = 30; % (пиксели) Оффсет подписей от концов осей
Graphics_Properties.Summation_Coord_Color = uint8([255 0 255]);

% Параметры фактического центра давления
Graphics_Properties.Actual_Pressure_Center_Size = 0.02; % Относительный диаметр фактического центра давления (по отношению к характерному размеру модели)
Graphics_Properties.Actual_Pressure_Center_Color = uint8([255 0 0]); % Цвет фактического центра давления

% Общие параметры векторов результирующих сил и моментов
Graphics_Properties.Force_Size = 0.25; % Длина векторов сил (по отношению к характерному размеру модели)
Graphics_Properties.Force_Line_Width = 1.5; % Толщина линии векторов сил
Graphics_Properties.Force_Font_Size = 16; % Размер шрифта значений сил
Graphics_Properties.Moment_Size = 0.25; % Длина векторов сил (по отношению к характерному размеру модели)
Graphics_Properties.Moment_Line_Width = 1.5; % Толщина линии векторов сил
Graphics_Properties.Moment_Font_Size = 16; % Размер шрифта значений сил

% Параметры стрелок на векторах результирующих сил и моментов
Graphics_Properties.Force_Arrow_Size_1 = 0.2; % Относительная длина стрелки на векторе силы (по отношению к длине вектора)
Graphics_Properties.Force_Arrow_Size_2 = 0.08; % Относительная ширина стрелки на векторе силы (по отношению к длине вектора)
Graphics_Properties.Moment_Arrow_Size_1 = 0.2; % Относительная длина одной стрелки на векторе момента (по отношению к длине вектора)
Graphics_Properties.Moment_Arrow_Size_2 = 0.08; % Относительная ширина стрелки на векторе момента (по отношению к длине вектора)

% Цвета векторов результирующих сил и моментов
Graphics_Properties.P_Vector_Color = uint8([255 0 0]); % красный

Graphics_Properties.Pn_Vector_Color = uint8([0 255 0]); % зеленый
Graphics_Properties.Pt_Vector_Color = uint8([127 0 255]); % фиолетовый

Graphics_Properties.Px_Vector_Color = uint8([255 192 0]); % темножелтый
Graphics_Properties.Py_Vector_Color = uint8([0 127 0]); % темнозеленый
Graphics_Properties.Pz_Vector_Color = uint8([0 0 255]); % синий

Graphics_Properties.M_Vector_Color = uint8([255 128 0]); % оранжевый

Graphics_Properties.Mx_Vector_Color = uint8([0 255 255]); % голубой
Graphics_Properties.My_Vector_Color = uint8([255 0 255]); % розовый
Graphics_Properties.Mz_Vector_Color = uint8([255 255 0]); % желтый

% Параметры векторов распределенной нагрузки
Graphics_Properties.CID_Distr_Load_Vector_Size = 0.2; % Относительная высота векторов распределенной нагрузки (по отношению к характерной длине модели)
Graphics_Properties.CID_Distr_Load_Vector_Color = uint8([0 255 255]); % Цвет векторов распределенной нагрузки
Graphics_Properties.CID_Distr_Load_Arrow_Size_1 = 0.1; % Относительная длина стрелки на векторе (по отношению к длине вектора)
Graphics_Properties.CID_Distr_Load_Arrow_Size_2 = 0.04; % Относительная ширина стрелки на векторе (по отношению к длине вектора)
Graphics_Properties.Distr_Load_Vector_Line_Width = 0.01; % Толщина линий векторов распределенной нагрузки (задано маленькое значение, чтобы толщина линиий была 1 пиксель)

% Параметры векторов давления
Graphics_Properties.Pressure_Vector_Size = 0.2; % Относительная высота векторов давления (по отношению к характерной длине модели)
Graphics_Properties.Pressure_Vector_Color = uint8([255 0 255]); % Цвет векторов давления
Graphics_Properties.Normal_Pressure_Vector_Color = uint8([0 255 255]); % Цвет векторов давления (нормальная компонента)
Graphics_Properties.Tangential_Pressure_Vector_Color = uint8([255 255 0]); % Цвет векторов давления (тангенциальная компонента)
Graphics_Properties.Pressure_Arrow_Size_1 = 0.1; % Относительная длина стрелки на векторе (по отношению к длине вектора)
Graphics_Properties.Pressure_Arrow_Size_2 = 0.04; % Относительная ширина стрелки на векторе (по отношению к длине вектора)
Graphics_Properties.Pressure_Vector_Line_Width = 0.01; % Толщина линий векторов распределенной нагрузки (задано маленькое значение, чтобы толщина линиий была 1 пиксель)
